A computing system includes hardware, software, and sometimes network components. The configuration of the computing system will change over time, as existing components are upgraded, modified, deleted, or taken offline and as new components are added. Today it is common for enterprise computing systems to include dozens or even hundreds of different components. When a computing system is this large, it is desirable to plan carefully for such configuration changes, since large numbers of users are likely to be affected. Also, configuration changes can have unexpected consequences in a large system, where the number of component interactions grows faster than the number of components.